const parents = {
  PwdMan: "个人管理",
  FinMan: "个人管理",
  AlcQry: "任务查询",
  FltQry: "任务查询",
  TaskPrt: "任务书打印",
  HisPrt: "任务书打印",
  UserMan: "管理员",
  RoleMan: "管理员",
  SigtMan: "管理员",
  BordConfig: "管理员",
  KKMan: "管理员",
  TaskEntry: "管理员",
  assignmentReview: "任务书打印",
  differenceSetting: "管理员",
  LogSys: "管理员",
};
// 二级模块默认排序
const defaultModulesSort = [
  "TaskPrt",
  "HisPrt",
  "FinMan",
  "PwdMan",
  "FltQry",
  "AlcQry",
  "UserMan",
  "RoleMan",
  "SigtMan",
  "BordConfig",
  "KKMan",
  "TaskEntry",
  "assignmentReview",
  "differenceSetting",
  "LogSys",
];
export function initModules(modules = [], allMenu) {
  // 模块所属
  const infoOneMenu = {
    任务书打印: [],
    个人管理: [],
    任务查询: [],
    管理员: [],
  };
  // 筛选出具有权限模块的路由
  allMenu = allMenu.filter((ele) => {
    return modules.includes(ele.meta.moduleName);
  });
  // 进行二级模块排序
  allMenu.sort((a, b) => {
    return (
      defaultModulesSort.indexOf(a.meta.moduleName) -
      defaultModulesSort.indexOf(b.meta.moduleName)
    );
  });
  // 整合到自己所属的上级模块
  allMenu.forEach((e) => {
    if (parents[e.meta.moduleName]) {
      infoOneMenu[parents[e.meta.moduleName]].push(e);
    }
  });
  // 去除infoOneMenu里面空数组的属性
  const sonKeys = Object.keys(infoOneMenu);
  sonKeys.forEach((ele) => {
    if (!infoOneMenu[ele].length) {
      delete infoOneMenu[ele];
    }
  });

  const routes = Object.keys(infoOneMenu).map((ele) => {
    let ename = infoOneMenu[ele][0].ename;
    if (
      modules.includes("AlcQry") &&
      modules.includes("FltQry") &&
      ele === "任务查询"
    ) {
      // 任务查询单独做处理，AlcQry|FltQry都有就显示任务查询，否则单独显示
      ename = "inquire";
    }
    return {
      name: ele,
      ename,
      children: infoOneMenu[ele],
    };
  });
  return routes;
}
